{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Bagging, Random Forests and Boosting for Classification\n",
    "### Predicting Credit Card Default"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Data Set Information:\n",
    "\n",
    "**This research aimed at the case of customers default payments in Taiwan**\n",
    "\n",
    "### Features description:\n",
    "\n",
    "- LIMIT_BAL: Amount of the given credit (NT dollar): it includes both the individual consumer credit and his/her family (supplementary) credit. \n",
    "- SEX: Gender (1 = male; 2 = female). \n",
    "- EDUCATION: Education (1 = graduate school; 2 = university; 3 = high school; 4 = others). \n",
    "- MARRIAGE: Marital status (1 = married; 2 = single; 3 = others). \n",
    "- AGE: Age (year). \n",
    "- PAY_0 - PAY_6: History of past payment. We tracked the past monthly payment records (from April to September, 2005) as follows: 0 = the repayment status in September, 2005; 1 = the repayment status in August, 2005; . . .; 6 = the repayment status in April, 2005. The measurement scale for the repayment status is: -1 = pay duly; 1 = payment delay for one month; 2 = payment delay for two months; . . .; 8 = payment delay for eight months; 9 = payment delay for nine months and above.\n",
    "- BILL_AMT1-BILL_AMT6: Amount of bill statement (NT dollar). X12 = amount of bill statement in September, 2005; X13 = amount of bill statement in August, 2005; . . .; X17 = amount of bill statement in April, 2005. \n",
    "- PAY_AMT1-PAY_AMT6: Amount of previous payment (NT dollar).\n",
    "- default payment next month: **positive class: default | negative class: pay**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Importing useful libraries\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Preparation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "default = pd.read_csv('../data/credit_card_default.csv', index_col=\"ID\")\n",
    "default.rename(columns=lambda x: x.lower(), inplace=True)\n",
    "default.rename(columns={'pay_0':'pay_1','default payment next month':'default'}, inplace=True)\n",
    "# Base values: female, other_education, not_married\n",
    "default['grad_school'] = (default['education'] == 1).astype('int')\n",
    "default['university'] = (default['education'] == 2).astype('int')\n",
    "default['high_school'] = (default['education'] == 3).astype('int')\n",
    "default['male'] = (default['sex']==1).astype('int')\n",
    "default['married'] = (default['marriage'] == 1).astype('int')\n",
    "\n",
    "default.drop(['sex','marriage', 'education'], axis=1, inplace=True)\n",
    "\n",
    "# For pay_i features: if >0 then it means the customer was delayed i months ago\n",
    "pay_features = ['pay_' + str(i) for i in range(1,7)]\n",
    "for p in pay_features:\n",
    "    default[p] = (default[p] > 0).astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>limit_bal</th>\n",
       "      <th>age</th>\n",
       "      <th>pay_1</th>\n",
       "      <th>pay_2</th>\n",
       "      <th>pay_3</th>\n",
       "      <th>pay_4</th>\n",
       "      <th>pay_5</th>\n",
       "      <th>pay_6</th>\n",
       "      <th>bill_amt1</th>\n",
       "      <th>bill_amt2</th>\n",
       "      <th>...</th>\n",
       "      <th>pay_amt3</th>\n",
       "      <th>pay_amt4</th>\n",
       "      <th>pay_amt5</th>\n",
       "      <th>pay_amt6</th>\n",
       "      <th>default</th>\n",
       "      <th>grad_school</th>\n",
       "      <th>university</th>\n",
       "      <th>high_school</th>\n",
       "      <th>male</th>\n",
       "      <th>married</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ID</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20000</td>\n",
       "      <td>24</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3913</td>\n",
       "      <td>3102</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>120000</td>\n",
       "      <td>26</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2682</td>\n",
       "      <td>1725</td>\n",
       "      <td>...</td>\n",
       "      <td>1000</td>\n",
       "      <td>1000</td>\n",
       "      <td>0</td>\n",
       "      <td>2000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>90000</td>\n",
       "      <td>34</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>29239</td>\n",
       "      <td>14027</td>\n",
       "      <td>...</td>\n",
       "      <td>1000</td>\n",
       "      <td>1000</td>\n",
       "      <td>1000</td>\n",
       "      <td>5000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>50000</td>\n",
       "      <td>37</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>46990</td>\n",
       "      <td>48233</td>\n",
       "      <td>...</td>\n",
       "      <td>1200</td>\n",
       "      <td>1100</td>\n",
       "      <td>1069</td>\n",
       "      <td>1000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>50000</td>\n",
       "      <td>57</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8617</td>\n",
       "      <td>5670</td>\n",
       "      <td>...</td>\n",
       "      <td>10000</td>\n",
       "      <td>9000</td>\n",
       "      <td>689</td>\n",
       "      <td>679</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    limit_bal  age  pay_1  pay_2  pay_3  pay_4  pay_5  pay_6  bill_amt1  \\\n",
       "ID                                                                        \n",
       "1       20000   24      1      1      0      0      0      0       3913   \n",
       "2      120000   26      0      1      0      0      0      1       2682   \n",
       "3       90000   34      0      0      0      0      0      0      29239   \n",
       "4       50000   37      0      0      0      0      0      0      46990   \n",
       "5       50000   57      0      0      0      0      0      0       8617   \n",
       "\n",
       "    bill_amt2   ...     pay_amt3  pay_amt4  pay_amt5  pay_amt6  default  \\\n",
       "ID              ...                                                       \n",
       "1        3102   ...            0         0         0         0        1   \n",
       "2        1725   ...         1000      1000         0      2000        1   \n",
       "3       14027   ...         1000      1000      1000      5000        0   \n",
       "4       48233   ...         1200      1100      1069      1000        0   \n",
       "5        5670   ...        10000      9000       689       679        0   \n",
       "\n",
       "    grad_school  university  high_school  male  married  \n",
       "ID                                                       \n",
       "1             0           1            0     0        1  \n",
       "2             0           1            0     0        0  \n",
       "3             0           1            0     0        0  \n",
       "4             0           1            0     0        1  \n",
       "5             0           1            0     1        1  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "default.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Building models using all features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import accuracy_score, precision_score, recall_score, confusion_matrix, precision_recall_curve\n",
    "from sklearn.preprocessing import RobustScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "target_name = 'default'\n",
    "X = default.drop('default', axis=1)\n",
    "feature_names = X.columns\n",
    "robust_scaler = RobustScaler()\n",
    "X = robust_scaler.fit_transform(X)\n",
    "y = default[target_name]\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15, random_state=55, stratify=y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def CMatrix(CM, labels=['pay','default']):\n",
    "    df = pd.DataFrame(data=CM, index=labels, columns=labels)\n",
    "    df.index.name='TRUE'\n",
    "    df.columns.name='PREDICTION'\n",
    "    df.loc['Total'] = df.sum()\n",
    "    df['Total'] = df.sum(axis=1)\n",
    "    return df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Preparing a DataFrame for model analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Data frame for evaluation metrics\n",
    "metrics = pd.DataFrame(index=['accuracy', 'precision' ,'recall'], \n",
    "                      columns=['LogisticReg', 'Bagging', 'RandomForest', 'Boosting'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Accuracy**: the proportion of the total number of predictions that are correct\n",
    "- **Precision**: the proportion of positive predictions that are actually correct\n",
    "- **Recall**: the proportion of positive observed values correctly predicted as such\n",
    "\n",
    "**In this application:**\n",
    "- **Accuracy**: Overall how often the model predicts correctly defaulters and non-defaulters\n",
    "- **Precision**: When the model predicts **default**: how often is correct?\n",
    "- **Recall**: The proportion of **actual defalters** that the model will correctly predict as such\n",
    "\n",
    "#### Which metric should I use?\n",
    "\n",
    "- **False Positive**: A person who will pay predicted as defaulter\n",
    "- **False Negative**: A person who default predicted as payer\n",
    "\n",
    "#### False negatives are worse => look for a better recall"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A. Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>PREDICTION</th>\n",
       "      <th>pay</th>\n",
       "      <th>default</th>\n",
       "      <th>Total</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TRUE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>pay</th>\n",
       "      <td>3315</td>\n",
       "      <td>190</td>\n",
       "      <td>3505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>default</th>\n",
       "      <td>684</td>\n",
       "      <td>311</td>\n",
       "      <td>995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Total</th>\n",
       "      <td>3999</td>\n",
       "      <td>501</td>\n",
       "      <td>4500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "PREDICTION   pay  default  Total\n",
       "TRUE                            \n",
       "pay         3315      190   3505\n",
       "default      684      311    995\n",
       "Total       3999      501   4500"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1. Import the estimator object (model)\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "# 2. Create an instance of the estimator\n",
    "logistic_regression = LogisticRegression(random_state=55)\n",
    "\n",
    "# 3. Use the trainning data to train the estimator\n",
    "logistic_regression.fit(X_train, y_train)\n",
    "\n",
    "# 4. Evaluate the model\n",
    "y_pred_test = logistic_regression.predict(X_test)\n",
    "metrics.loc['accuracy','LogisticReg'] = accuracy_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['precision','LogisticReg'] = precision_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['recall','LogisticReg'] = recall_score(y_pred=y_pred_test, y_true=y_test)\n",
    "#Confusion matrix\n",
    "CM = confusion_matrix(y_pred=y_pred_test, y_true=y_test)\n",
    "CMatrix(CM)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## B. Bagging"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>PREDICTION</th>\n",
       "      <th>pay</th>\n",
       "      <th>default</th>\n",
       "      <th>Total</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TRUE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>pay</th>\n",
       "      <td>3312</td>\n",
       "      <td>193</td>\n",
       "      <td>3505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>default</th>\n",
       "      <td>683</td>\n",
       "      <td>312</td>\n",
       "      <td>995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Total</th>\n",
       "      <td>3995</td>\n",
       "      <td>505</td>\n",
       "      <td>4500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "PREDICTION   pay  default  Total\n",
       "TRUE                            \n",
       "pay         3312      193   3505\n",
       "default      683      312    995\n",
       "Total       3995      505   4500"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1. Import the estimator object (model)\n",
    "from sklearn.ensemble import BaggingClassifier\n",
    "\n",
    "# 2. Create an instance of the estimator\n",
    "log_reg_for_bagging = LogisticRegression()\n",
    "bagging = BaggingClassifier(base_estimator=log_reg_for_bagging, n_estimators=10,\n",
    "                            random_state=55, n_jobs=-1)\n",
    "\n",
    "# 3. Use the trainning data to train the estimator\n",
    "bagging.fit(X_train, y_train)\n",
    "\n",
    "# 4. Evaluate the model\n",
    "y_pred_test = bagging.predict(X_test)\n",
    "metrics.loc['accuracy','Bagging'] = accuracy_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['precision','Bagging'] = precision_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['recall','Bagging'] = recall_score(y_pred=y_pred_test, y_true=y_test)\n",
    "#Confusion matrix\n",
    "CM = confusion_matrix(y_pred=y_pred_test, y_true=y_test)\n",
    "CMatrix(CM)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## C. Random Forests"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>PREDICTION</th>\n",
       "      <th>pay</th>\n",
       "      <th>default</th>\n",
       "      <th>Total</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TRUE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>pay</th>\n",
       "      <td>3276</td>\n",
       "      <td>229</td>\n",
       "      <td>3505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>default</th>\n",
       "      <td>625</td>\n",
       "      <td>370</td>\n",
       "      <td>995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Total</th>\n",
       "      <td>3901</td>\n",
       "      <td>599</td>\n",
       "      <td>4500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "PREDICTION   pay  default  Total\n",
       "TRUE                            \n",
       "pay         3276      229   3505\n",
       "default      625      370    995\n",
       "Total       3901      599   4500"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1. Import the estimator object (model)\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# 2. Create an instance of the estimator\n",
    "RF = RandomForestClassifier(n_estimators=35, max_depth=20, random_state=55, max_features='sqrt',\n",
    "                            n_jobs=-1)\n",
    "\n",
    "# 3. Use the trainning data to train the estimator\n",
    "RF.fit(X_train, y_train)\n",
    "\n",
    "# 4. Evaluate the model\n",
    "y_pred_test = RF.predict(X_test)\n",
    "metrics.loc['accuracy','RandomForest'] = accuracy_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['precision','RandomForest'] = precision_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['recall','RandomForest'] = recall_score(y_pred=y_pred_test, y_true=y_test)\n",
    "#Confusion matrix\n",
    "CM = confusion_matrix(y_pred=y_pred_test, y_true=y_test)\n",
    "CMatrix(CM)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## D. Boosting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>PREDICTION</th>\n",
       "      <th>pay</th>\n",
       "      <th>default</th>\n",
       "      <th>Total</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TRUE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>pay</th>\n",
       "      <td>3347</td>\n",
       "      <td>158</td>\n",
       "      <td>3505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>default</th>\n",
       "      <td>724</td>\n",
       "      <td>271</td>\n",
       "      <td>995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Total</th>\n",
       "      <td>4071</td>\n",
       "      <td>429</td>\n",
       "      <td>4500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "PREDICTION   pay  default  Total\n",
       "TRUE                            \n",
       "pay         3347      158   3505\n",
       "default      724      271    995\n",
       "Total       4071      429   4500"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1. Import the estimator object (model)\n",
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "\n",
    "# 2. Create an instance of the estimator\n",
    "boosting = AdaBoostClassifier(n_estimators=50, learning_rate=0.1, random_state=55)    \n",
    "\n",
    "# 3. Use the trainning data to train the estimator\n",
    "boosting.fit(X_train, y_train)\n",
    "\n",
    "# 4. Evaluate the model\n",
    "y_pred_test = boosting.predict(X_test)\n",
    "metrics.loc['accuracy','Boosting'] = accuracy_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['precision','Boosting'] = precision_score(y_pred=y_pred_test, y_true=y_test)\n",
    "metrics.loc['recall','Boosting'] = recall_score(y_pred=y_pred_test, y_true=y_test)\n",
    "#Confusion matrix\n",
    "CM = confusion_matrix(y_pred=y_pred_test, y_true=y_test)\n",
    "CMatrix(CM)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>LogisticReg</th>\n",
       "      <th>Bagging</th>\n",
       "      <th>RandomForest</th>\n",
       "      <th>Boosting</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>accuracy</th>\n",
       "      <td>80.5778</td>\n",
       "      <td>80.5333</td>\n",
       "      <td>81.0222</td>\n",
       "      <td>80.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>precision</th>\n",
       "      <td>62.0758</td>\n",
       "      <td>61.7822</td>\n",
       "      <td>61.7696</td>\n",
       "      <td>63.1702</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>recall</th>\n",
       "      <td>31.2563</td>\n",
       "      <td>31.3568</td>\n",
       "      <td>37.1859</td>\n",
       "      <td>27.2362</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          LogisticReg  Bagging RandomForest Boosting\n",
       "accuracy      80.5778  80.5333      81.0222     80.4\n",
       "precision     62.0758  61.7822      61.7696  63.1702\n",
       "recall        31.2563  31.3568      37.1859  27.2362"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "100*metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n7gmQD54ykCS1C0uWLKF79+4A1NXV8dWvfpWBAwdSWlrKr371q+btrrvuOvr27cvhhx/OyJEj+clP\nfgLAjBkzKCsra57meM0Ux5WVlc1TEV977bWMGTOGiooK+vTps9aowYb2WygcIZAktVnLly+nvLyc\nZcuW8eGHHzbfobC4uJgnn3ySz33ucyxatIghQ4Zwwgkn8Oqrr/L4448za9YsVq1axcCBAxk0aBAA\nZ599NnfffTdDhw5d790K15g3bx4vvvgitbW19O3bl7Fjx1JVVbXB/RYKA4Ekqc1qecqgurqaM888\nk+rqalJKXH311UyZMoUddtiB9957jw8//JCXX36ZE088keLiYoqLizn++OMB+PTTT6mtrWXo0KFA\n06yHTz/99Hrf89hjj6Vz58507tyZz3/+8xvdbyExEEiS2oWhQ4eyaNEiPvroI5599lk++ugjZs6c\nSVFREb1796a+vj4n79O5c+fmxx06dGie6bDQeQ2BJKldmDdvHo2Njey6664sXryYz3/+8xQVFfHi\niy/y17/+FYDDDjuM3/zmN9TX11NXV9c8CtCtWze6du3KK6+8Amx4euQN2dB+C4kjBJKk7GTxMcFc\nW3MNwerVq4kIJk2aRIcOHRg1ahTHH388paWlDB48mH79+gFw8MEHc8IJJ1BWVsZuu+1GaWlp8zTI\n99xzD+eccw477LADRx555HqnR96Qje23UBgIJEltVmNjI/DZ6Y979OjBtGnT1vuayy67jGuvvZZl\ny5ZxxBFHNF/8d8ABBzB79mwAbrzxxuaPGlZUVFBRUQE0fcqgpTXTIG9sv4ViuwsEK4qCb11VOG2P\nLQkuL6B+oI32NKl0i186tmQs4yaNy2ExuTFn9Jx8lyBtE+eeey5vvvkm9fX1jB49moEDBwLwzDPP\ncMMNN9DQ0MBee+3FxIkTc7LfQtHGvutKkrR1HnroofUuP+200zjttNNyvt9C4UWFkiTJQCBJkgwE\nkiQJA4EkScKLCiVJWSrdik/brE82n3RZM/3xypUr2WeffXjggQfo1q3bVr93TU0Nxx133FofK9xS\nZ511Fn/84x+b70swZswYxo8fv9X7XZ/Kyko6deqU8ymgwRECSVIbtmYug1deeYVddtmF22+/Pd8l\nrddNN91EVVUVVVVVmxUG1txnIVuVlZVMnTp1c8vLSrsOBBHROyKqM48rIqLw7iUpSQKa5jJ47733\n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\ncjrTu/6hfJeRM5eubuCsAuoHCq+njfVT07qlSO3akiVL6N69O9A0udH3v/99nnvuOSKCH/zgB5x2\n2mkbXP7BBx9w2mmnsWTJEhoaGvj5z3/OM8880zx50gEHHMDkyZMpKSlpngvi2muvpUePHlRXVzNo\n0CAefPBBIoJnn32WSy65hJ122onDDjuMBQsW8PTTT+f5q7P1trtAIElqP9b8wF62bBkffvghL7zw\nAgBPPPEEVVVVzJo1i0WLFnHwwQdzxBFHMHXq1PUuf+ihh/j617/ONddcQ2NjI8uWLWPYsGHcdttt\nVFVVrfe9X3/9dd544w123313DjvsMF5++WUGDx7Meeedx5QpU9h7770ZOXLkel/bHhkIJElt1ppT\nBrW1tVRXV3PmmWdSXV3Nn/70J0aOHEmHDh3YbbfdOPLII5kxY8YGlx988MGMGTOGVatWcdJJJzVP\nj7wxhxxyCL169QKgvLycmpoaSkpK6NOnD3vvvTcAI0eO5K677tqmX4PW4jUEkqR2YejQoSxatIiP\nPvpos197xBFHMGXKFPbYYw/OOuss7r///k2+puUERx06dKChoWGz37c9MRBIktqFefPm0djYyK67\n7sqwYcN49NFHaWxs5KOPPmLKlCkccsghG1z+17/+ld12241zzjmH7373u7z22msAFBUVsWrVqqxr\n6Nu3LwsWLKCmpgaARx99dFu0mheeMpAkZSWbjwnm2pprCFavXk1EMGnSJDp06MDJJ5/MtGnTOPDA\nA4kIfvzjH/OFL3xhg8snTZrETTfdRFFRESUlJc0jBOeeey5lZWUMHDiQyZMnb7KeLl26cMcdd3DM\nMcew0047cfDBn5mSp91qtemP24ov9dk37fCt/8h3GTlzaWkDP51TWLmu0HraWD81Nx7bytVsvUKb\nKhgKryenP9626urqKCkpIaXEhRdeyH777ceECRM2ax9OfyxJUjt39913N39UcfHixZx33nn5Likn\nCufXMEmSWsGECRM2e0SgPXCEQJK0QdvbaeX2bGuPlYFAkrRexcXFfPzxx4aCdiClxMcff0xxcfEW\n72O7O2XQpagD89vhhVwbUllZSc2oinyXkVOF1lOh9aPtR69evVi4cOEWfe4/1+rr67fqh11bsy36\nKS4ubr6R0pbY7gKBJCk7RUVFzXfky7fKykoOOuigfJeRM22xH08ZSJIkA4EkSTIQSJIkDASSJAkD\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ddbb011748>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(8,5))\n",
    "metrics.plot(kind='barh', ax=ax)\n",
    "ax.grid();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "precision_rf, recall_rf, thresholds_rf = precision_recall_curve(y_true=y_test, \n",
    "                                                                probas_pred=RF.predict_proba(X_test)[:,1])\n",
    "precision_lr, recall_lr, thresholds_lr = precision_recall_curve(y_true=y_test, \n",
    "                                                                probas_pred=logistic_regression.predict_proba(X_test)[:,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Confusion matrix for modified Logistic Regression Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ddbce5ae80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(8,5))\n",
    "ax.plot(precision_rf, recall_rf, label='Random Forest')\n",
    "ax.plot(precision_lr,recall_lr , label='Logistic Regression')\n",
    "ax.set_ylim(0.5,1)\n",
    "ax.set_xlim(0.2,0.6)\n",
    "ax.set_xlabel('Precision')\n",
    "ax.set_ylabel('Recall')\n",
    "ax.set_title('Random Forest vs. Logistic Regression')\n",
    "ax.legend()\n",
    "ax.grid();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random Forest classifier with threshold of 0.12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall:  84.0\n",
      "Precision:  30.0\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>PREDICTION</th>\n",
       "      <th>pay</th>\n",
       "      <th>default</th>\n",
       "      <th>Total</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TRUE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>pay</th>\n",
       "      <td>1601</td>\n",
       "      <td>1904</td>\n",
       "      <td>3505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>default</th>\n",
       "      <td>160</td>\n",
       "      <td>835</td>\n",
       "      <td>995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Total</th>\n",
       "      <td>1761</td>\n",
       "      <td>2739</td>\n",
       "      <td>4500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "PREDICTION   pay  default  Total\n",
       "TRUE                            \n",
       "pay         1601     1904   3505\n",
       "default      160      835    995\n",
       "Total       1761     2739   4500"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred_proba = RF.predict_proba(X_test)[:,1]\n",
    "y_pred_test = (y_pred_proba >= 0.12).astype('int')\n",
    "#Confusion matrix\n",
    "CM = confusion_matrix(y_pred=y_pred_test, y_true=y_test)\n",
    "print(\"Recall: \", 100*round(recall_score(y_pred=y_pred_test, y_true=y_test),2))\n",
    "print(\"Precision: \", 100*round(precision_score(y_pred=y_pred_test, y_true=y_test),2))\n",
    "CMatrix(CM)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Feature importance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nhRI2owPtAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ddbcf48908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(8,6))\n",
    "feature_importances = pd.Series(data=RF.feature_importances_, index=feature_names)\n",
    "feature_importances.sort_values().plot(kind='barh', ax=ax)\n",
    "ax.set_xlabel('Importance')\n",
    "ax.set_ylabel('Feature')\n",
    "ax.set_title('Feature importances from Random Forest model')\n",
    "ax.grid();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
